There is a need to facilitate the transfer of media data from a Media Server to a Media client in a system such as that shown in FIG. 1. The Media Server (100) and Media Client (135) are both computers with memory, mass storage, and processors capable of running various types of software. The Media Server (100) includes a Media Database (195) which contains various types of media data including images, audio data, video data, and so forth. The Media Server (100) also includes suitable Media Delivery Means (110) such as software capable of reading media data from the Media Database (105) and transferring this data to the Media Client (135), by means of, for example, a Local Area Network (115), the Internet (120), an Internet Service Provider (125), and a dial-up telephone connection (130).
The Media Client (135) includes memory that may be used to form media buffers (140) for receiving media data originating from the Media Server (100). The Media Client (135) also includes various Media Players (143 and 145) which provide means for presenting visual media in windows on a display screen (144), and presenting audio data on speakers or other audio output hardware (142).
The media data contained within the Media Database (105) may have the form of various media data files. One example of a media data file is an MPEG-4 file as defined by the ISO standards document ISO/IEC JTC/SC29/WG11 14496-1 (MPEG4 Systems). The structure of such an MPEG-4 file is briefly summarized in FIG. 2.
As shown in FIG. 2, an MPEG-4 file contains one or more media data blocks (200a-200n), each representing a particular media “track” such as a still image, an audio stream, a sequence of images forming a video stream, etc. In addition, an MPEG-4 file also contains a media descriptor (210) comprised of a media header (220) and a sequence of track descriptors (230a-230n), one for each of the media data blocks, (200a-200n).
The media header (220) specifies in formation common to all of a particular kind of media track, including the overall duration of the media file, and a time/date stamp indicating when the file was created. For more details of the media header, see the aforementioned ISO standards document ISO/IEC JTC/SC29/WG11 14496-1.
As shown in FIG. 3, each media a data block (300) is composed of a sequence of media chunks (310a-310n). Each media chunk (310a-310n) consists of a sequence of media samples (320a-320n, 321a-321n, and 322a-322n). Each media sample represents a block of media data associated with a particular point in time. The corresponding track descriptors (230a-230n of FIG. 2) include various tables (not shown) which specify the location and size, in number of bytes, of each media chunk and of each media sample. These tables also specify the point in time at which each media sample is to be presented, and the duration or length of time that the media data of the media sample is to be presented. In the case of visual data, the track descriptor also specifies the dimensions (height and width) of the images contained in the media data block. Detailed descriptions of these tables can be found in the aforementioned MPEG-4 file specifications, (ISO/IEC JTC/SC29/WG11 14496-1).
A file with the structure described in FIG. 2 and FIG. 3 provides an efficient means of storing multimedia data, but this form is poorly suited for transferring this data from a server to a client over a communications medium with a limited bandwidth. Because this file is organized by media tracks, rather than on a temporal basis, the client cannot begin to present any of the data contained in such a file until the entire file has been transferred from the server to the client. This can result in a very long delay between the point in time when a client requests the data and the point in time when the client is able to start presenting the media data.
The time interval between the point in time when a client requests the media data and the point when the client can begin to present the data without risk of interruption is called the “initial delay.” In the worst case, the initial delay is given byDelay (worst)=(file size in bytes)/(bandwidth in bytes per second)where “bandwidth” is a property of the communications path from the server to the client. When the communications path from the server to the client requires multiple steps, as shown in FIG. 1, the “bandwidth” value is determined by the minimum bandwidth for all of the steps.
It is therefore and object of this invention is to determine an optimal ordering of a set of multimedia data packets, the resulting optimal initial delay, and the minimum sizes of all client data buffers, given an arbitrary set of multimedia data streams, a maximum packet size, and a communications bandwidth limit.